package gestion.camping.controleur;

import gestion.camping.connexion.Connexion;
import gestion.camping.vue.ViewHome;

import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.sql.SQLException;

import javax.swing.JPanel;

public class HomeController extends WindowAdapter {
	
	private static ViewHome frame;
	private PersonneController personneController;
	private ReservationController reservationController;
	private EmplacementController emplacementController;
	private SaisonController saisonController;
	private FraisReservationController fraisReservationController;
	private TarifController tarifController;
	
	
	public HomeController(){
		
		init();
	}
	
	public void init(){
			
		//On crée la fenêtre
		frame = new ViewHome(this);
		//On fait apparaître la fenêtre
		frame.setVisible(true);
		
		frame.addWindowListener(this);
	}

	public ViewHome getFrame() {
		return frame;
	}

	
	public void getControllerSaison(){
		//Si on n'a déja une instance n'en recréer pas une.
		if(saisonController == null){
			saisonController = new SaisonController();
		}
		
		setPanelFrame(saisonController.getViewListe());
	}
	
	public void getControllerTarif(){
		//Si on n'a déja une instance n'en recréer pas une.
		if(tarifController == null){
			tarifController = new TarifController();
		}
		
		setPanelFrame(tarifController.getViewListe());
	}
	
	public void getControllerFraisReservation(){
		//Si on n'a déja une instance n'en recréer pas une.
		if(fraisReservationController == null){
			fraisReservationController = new FraisReservationController();
		}
		
		setPanelFrame(fraisReservationController.getViewListe());
	}
	
	public void getControllerPersonne(){
		//Si on n'a déja une instance n'en recréer pas une.
		if(personneController == null){
			personneController = new PersonneController();
		}
		
		setPanelFrame(personneController.getViewListe());
	}
	
	public void getControllerReservation() {
		//Si on n'a déja une instance n'en recréer pas une.
		if(reservationController == null){
			reservationController = new ReservationController();
		}
		
		setPanelFrame(reservationController.getViewListe());
	}

	public void getControllerEmplacement() {
		//Si on n'a déja une instance n'en recréer pas une.
		if(emplacementController == null){
			emplacementController = new EmplacementController();
		}
		
		setPanelFrame(emplacementController.getViewListe());
	}
	
	public static void setPanelFrame(JPanel panel){		
		frame.setContentPane(panel);
		frame.repaint();
	}

	@Override
	public void windowClosing(WindowEvent e){
		try {
			Connexion.getInstance().close();
			System.out.println("Connexion fermée");
		} catch (SQLException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
	}

	public void getControllerAccueil() {
		frame.dispose();
		init();
	}

	public void getFormulaireReservation() {
		Runtime runtime = Runtime.getRuntime();
		try {
			runtime.exec(new String[] // 2 parametres pris dans un tableau,
										// l'appli et le pdf
			{
					"C:\\Program Files\\Adobe\\Reader 9.0\\Reader\\AcroRd32.exe",
					"C:\\temp\\formResa.pdf" });
			}

		catch (Exception err)

		{
			System.out.println("err = " + err);
		}
	}
}
